package me.sealer.ssm.utils;

import me.sealer.ssm.constant.PageConstant;
import me.sealer.ssm.page.PageResult;
import org.apache.shiro.util.Assert;

import java.util.ArrayList;
import java.util.List;

/**
 * 功能描述： $ PageUtil
 *
 * @author sealer
 * @email 1178884049@qq.com
 * @date 2020年01月03日 17时26分51秒
 */
public class PageUtil {
    /**
     * 获取分页结果
     *
     * @param pageNo   第几页
     * @param pageSize 每页记录数
     * @param list     结果列表
     * @param count    记录数
     * @param <T>      结果泛型
     * @return 分页结果
     */
    public static <T> PageResult<T> generatePageResult(Integer pageNo, Integer pageSize, List<T> list, Integer count) {
        Assert.isTrue(pageNo != null && pageSize != null && count != null, "分页参数异常");

        if (list == null) {
            list = new ArrayList<>();
        }

        PageResult<T> pageResult = new PageResult<>();
        pageResult.setList(list);
        pageResult.setTotalElements(count);

        pageResult.setPageNo(pageNo);
        pageResult.setPageSize(pageSize);

        pageResult.setTotalPages((count + pageSize - 1) / pageSize);
        pageResult.setFirst(pageNo == PageConstant.FIRST_PAGE_NO);
        pageResult.setLast(pageNo == (count + pageSize - 1) / pageSize);
        return pageResult;
    }
}
